package main.Q201_300;

import java.util.ArrayList;
import java.util.List;

public class Q251_260 {
    public static void main(String[] args) {
        System.out.println("Question251：");
        System.out.println("Question252：");
        System.out.println("Question253：");
        System.out.println("Question254：");
        System.out.println("Question255：");
        System.out.println("Question256：");
        System.out.println("Question257：二叉树的所有路径");
        System.out.println("Question258：各位相加");
        System.out.println("Question259：");
        System.out.println("Question260：只出现一次的数字Ⅲ");
    }
}

class Question258{
    public static int addDigits(int num) {
        if (num<10) return num;
        String str;
        char[] strs;
        while (num>9){
            str=String.valueOf(num);
            strs=str.toCharArray();
            num=0;
            for (int i=0;i<strs.length;i++) num+=strs[i]-48;
        }
        return num;
    }
}

class Question257{
    List<String> list=new ArrayList<>();
    public void process(TreeNode root,StringBuffer str){
        StringBuffer lastStr=new StringBuffer(str.toString());
        if (root.left==null&&root.right==null) {//判断该节点为叶子节点
            lastStr.append(root.val);
            list.add(lastStr.toString());
        }
        lastStr.append(root.val);
        lastStr.append("->");
        if (root.left!=null) process(root.left,lastStr);
        if (root.right!=null) process(root.right,lastStr);
    }
    public List<String> binaryTreePaths(TreeNode root) {
        StringBuffer str=new StringBuffer();
        process(root,str);
        return list;
    }
}

class Question260{
    public int[] singleNumber(int[] nums) {
        int[] result=new int[2];
        int eor=0,index=0;
        for (int num:nums) eor^=num;
        for (int i=0;i<32;i++){
            if (((eor>>i)&1)==1){//寻找单独数中32位中不同的位
                index=i;
                break;
            }
        }
        for (int num:nums){
            if (((num>>index)&1)==1){//数据中第index位为1的数
                result[0]^=num;
            }else {//数据中第index位不为1的数
                result[1]^=num;
            }
        }
        return result;
    }
}